const path = require('path')
const nodeExternals = require("webpack-node-externals");
const merge = require('webpack-merge')
const config = require('./webpack.base.js')

const serverConfig = {
  //为了不把 nodejs 内置模块打包进输出文件中，例如： fs net模块等；
  target: 'node',
  mode: 'development',
  //为了不把 node_modeuls 目录下的第三方模块打包进输出文件中
  externals: [nodeExternals()],
  //js执行入口文件
  entry: './src/server/index.js',
  // 打包以后，输出文件的名称和路径
  output: {
    filename: 'bundle.js',
    // __dirname 表示当前目录 path.resolve() 会返回依次所要进入的路径最后所返回的路径
    // 注意 '/foo/bar' ，'/' 开始表示回到主目录，因此 path.resolve('/foo/bar', '/tmp/file') 会返回 '/tmp/file'
    path: path.resolve(__dirname, 'build')
  },
  module: {
    rules: [
      {
        test: /\.css$/,
        use: ['isomorphic-style-loader', { // loader 的处理是从下到上，从右到左
          loader: 'css-loader',
          options: {
            importLoaders: 1, //使用 loader 的数量
            modules: true, // 支持 css 的模块化
            localIdentName: '[name]_[local]_[hash:base64:5]' // 自定义 Class 的名称 —— [name] = 文件名， [local] = class 名称， [hash:base64:5]=添加 hash 部分
          }
        }]
      }
    ]
  }
}

module.exports = merge(config, serverConfig)
